// Sound Manager Interface
// (c) jimon game studio

#ifndef JEH_ISOUNDMANAGER
#define JEH_ISOUNDMANAGER

#include "IBuffer.h"
#include "ISound.h"
#include "ISoundGroup.h"
#include "jeStl.h"
#include "IFileSystem.h"
#include "ILogManager.h"
#include "Config_Engine.h"

namespace je
{
	namespace sound
	{
		//! Sound Manager Interface
		class ISoundManager:public je::jeUnknown
		{
		public:

			//! Destructor
			virtual ~ISoundManager()
			{
			}

			//! Create Sound
			virtual ISound * CreateSound(core::IBuffer * Buffer,ISoundGroup * Group = NULL,u1 LoadToMemory = false) = 0;

			//! Create Sound Group
			virtual ISoundGroup * CreateSoundGroup() = 0;

			//! Get Root Group
			virtual ISoundGroup * GetRootGroup() = 0;
		};

		#ifdef JE_SOUND
		DECLARE_SINGLETON_E(JE_ENGINE_FUNCTION_API,JE_ENGINE_FUNCTION_CALL,SoundManager)
		#endif
	}
}

#endif
